{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "26f203ea",
   "metadata": {},
   "source": [
    "### 1.数值计算numpy\n",
    "\n",
    "#### 1.1对于一个存在在数组，如何添加一个用0填充的边界?"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bb6d8a92",
   "metadata": {},
   "source": [
    "例如对一个二维矩阵\n",
    "```\n",
    "10, 34, 54, 23\n",
    "31, 87, 53, 68\n",
    "98, 49, 25, 11\n",
    "84, 32, 67, 88\n",
    "```\n",
    "变换成\n",
    "```\n",
    " 0,  0,  0,  0,  0, 0\n",
    " 0, 10, 34, 54, 23, 0\n",
    " 0, 31, 87, 53, 68, 0\n",
    " 0, 98, 49, 25, 11, 0\n",
    " 0, 84, 32, 67, 88, 0\n",
    " 0,  0,  0,  0,  0, 0\n",
    "```\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "8049e609",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0,  0,  0,  0,  0,  0],\n",
       "       [ 0, 10, 34, 54, 23,  0],\n",
       "       [ 0, 31, 87, 53, 68,  0],\n",
       "       [ 0, 98, 49, 25, 11,  0],\n",
       "       [ 0, 84, 32, 67, 88,  0],\n",
       "       [ 0,  0,  0,  0,  0,  0]])"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "M=np.array([[10, 34, 54, 23],\n",
    "           [31, 87, 53, 68],\n",
    "           [98, 49, 25, 11],\n",
    "           [84, 32, 67, 88]])\n",
    "m,n=M.shape\n",
    "new=np.repeat(0,n+2)#头一行和最后一行\n",
    "new=new.reshape(1,n+2)#把new数组增加一个维度，便于拼接\n",
    "A=new\n",
    "for i in range(0,m):\n",
    "    pro=np.concatenate(([0],M[i],[0]))#给原来每一行左右加上0\n",
    "    pro=pro.reshape(1,n+2)#把pro数组也定义成二维的\n",
    "    A=np.concatenate((A,pro),axis=1)#在第二维进行拼接\n",
    "A=np.concatenate((A,new),axis=1)\n",
    "A.reshape(m+2,n+2)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d5e39498",
   "metadata": {},
   "source": [
    "#### 1.2 创建一个 5x5的矩阵，并设置值1,2,3,4落在其对角线下方位置"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "245a88bd",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0, 0, 0, 0, 0],\n",
       "       [1, 0, 0, 0, 0],\n",
       "       [0, 2, 0, 0, 0],\n",
       "       [0, 0, 3, 0, 0],\n",
       "       [0, 0, 0, 4, 0]])"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "np.diag([1,2,3,4],-1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b7929286",
   "metadata": {},
   "source": [
    "#### 1.3 创建一个8x8 的矩阵，并且设置成国际象棋棋盘样式（黑可以用0, 白可以用1）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "226c03c7",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[0 1 0 1 0 1 0 1]\n",
      " [1 0 1 0 1 0 1 0]\n",
      " [0 1 0 1 0 1 0 1]\n",
      " [1 0 1 0 1 0 1 0]\n",
      " [0 1 0 1 0 1 0 1]\n",
      " [1 0 1 0 1 0 1 0]\n",
      " [0 1 0 1 0 1 0 1]\n",
      " [1 0 1 0 1 0 1 0]]\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "M=np.zeros((8,8),dtype=int)\n",
    "m,n=M.shape\n",
    "for i in range(0,m):\n",
    "    for j in range(0,n):\n",
    "        if(i+j)%2==1:#在一个棋盘上黑色的行列数之和为奇数\n",
    "            M[i][j]=1#黑色为1\n",
    "        else:\n",
    "            pass\n",
    "print(M)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2a0ff24d",
   "metadata": {},
   "source": [
    "#### 1.4 求解线性方程组\n",
    "\n",
    "给定一个方程组，如何求出其的方程解。有多种方法，分析各种方法的优缺点（最简单的方式是消元法）。\n",
    "\n",
    "例如\n",
    "```\n",
    "3x + 4y + 2z = 10\n",
    "5x + 3y + 4z = 14\n",
    "8x + 2y + 7z = 20\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "5f9d6be3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "x= 6.0\n",
      "y= 0.0\n",
      "z= -4.0\n"
     ]
    }
   ],
   "source": [
    "#直接使用linalg库里面的求线性解方程组函数\n",
    "#Ax=b\n",
    "import numpy as np\n",
    "A=np.array([[3,4,2],[5,3,4],[8,2,7]])\n",
    "b=np.array([10,14,20])\n",
    "x=np.linalg.solve(A,b.T)#方程右边的解要转置\n",
    "print(\"x=\",x[0])\n",
    "print(\"y=\",x[1])\n",
    "print(\"z=\",x[2])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "75806567",
   "metadata": {},
   "source": [
    "#### 1.5 翻转一个数组（最后一个元素变成第一个）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "d53a48b0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[23  7  9 13 59]\n",
      " [14  2 19 46 54]\n",
      " [94 23 84 45  5]\n",
      " [51 57 46 92 81]\n",
      " [48 42 61 58  3]] \n",
      "\n",
      "[[ 3 58 61 42 48]\n",
      " [81 92 46 57 51]\n",
      " [ 5 45 84 23 94]\n",
      " [54 46 19  2 14]\n",
      " [59 13  9  7 23]]\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "A=np.random.randint(1,100,size=25).reshape(5,5)\n",
    "print(A,\"\\n\")\n",
    "A=np.flip(A)#直接使用numpy库的翻转函数\n",
    "print(A)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "56bb1ba1",
   "metadata": {},
   "source": [
    "#### 1.6产生一个十乘十随机数组，并且找出最大和最小值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "a20561c1",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[709 312 622 850 500 518 961 146 274 329]\n",
      " [686 199 598 264 710 460 750 328 364 501]\n",
      " [569 551   7 385 906  34 579 350 356 880]\n",
      " [ 19 953 944  87 395 534 975 327 560 143]\n",
      " [512  11  59 800 514 318 695 957 462 917]\n",
      " [854 530 742 626 368 792 955 560 877 731]\n",
      " [972 873 678 214 568 191 666 866 657 727]\n",
      " [484  64 433 911  45 171 197 982 826 106]\n",
      " [800 537 564 499 205 585 739 425 147 606]\n",
      " [829 676 449 656 897  50 821 237 278 868]]\n",
      "max number 982\n",
      "min number 7\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "A=np.random.randint(0,1000,(10,10))#生成随机整数矩阵，方便观察\n",
    "m=np.max(A)\n",
    "n=np.min(A)\n",
    "print(A)\n",
    "print(\"max number\",m)\n",
    "print(\"min number\",n)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "78bc84ef",
   "metadata": {},
   "source": [
    "### 2.Matplotlib\n",
    "\n",
    "#### 2.1 画出一个二次函数，同时画出梯形法求积分时的各个梯形"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "acfafb4d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "def Quadratic(x): # 定义二次函数\n",
    "    return 2*x**2 +3*x +4\n",
    "\n",
    "#选取二次函数的范围 \n",
    "x = np.linspace(-5, 5, num=100)\n",
    "y = Quadratic(x)\n",
    "plt.plot(x,y) # 先画出原函数的图形\n",
    "\n",
    "#选取画竖线的30个样本点\n",
    "a = np.linspace(-5, 5, num=30)\n",
    "for i in range(0,30):\n",
    "    plt.plot([a[i],a[i]],[0,Quadratic(a[i])],'k') # 画梯形的上底和下底\n",
    " \n",
    "ladders = [];\n",
    "for i in range(0,30):\n",
    "    ladders.append([a[i],Quadratic(a[i])]) # 因为梯形的腰是呈一条直线，所以这里存下各点坐标\n",
    "    \n",
    "npladders = np.array(ladders)\n",
    "plt.ylim(0,)#设置纵坐标从0开始\n",
    "plt.plot(npladders[:,0],npladders[:,1],'k'); # 把梯形的斜腰连起来\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5cc1f6f1",
   "metadata": {},
   "source": [
    "#### 2.2 绘制函数 $f(x) = sin^2(x - 2) e^{-x^2}$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "1e64f94f",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x216 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "x = np.linspace(0.0, 2.0, 100)\n",
    "y = ((np.sin(x-2))**2) * np.exp(-x**2)\n",
    "\n",
    "#设置绘图格式\n",
    "fig, ax = plt.subplots(figsize=(5, 3))\n",
    "fig.subplots_adjust(bottom=0.15, left=0.2)\n",
    "ax.plot(x, y)\n",
    "\n",
    "ax.set_xlabel('x label')\n",
    "ax.set_ylabel('y label')\n",
    "ax.set_title('$f(x) = sin^2(x - 2) e^{-x^2}$', pad=40)\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "96b94b06",
   "metadata": {},
   "source": [
    "#### 2.3 模拟一个醉汉在二维空间上的随机漫步。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7fb6e073",
   "metadata": {},
   "source": [
    "假设醉汉在移动的时候沿着任意的方向，每次移动单位步长，那么随机出一个移动的角度，就可以确定在x y 方向上移动的距离，将每次移动后的坐标加入数组就可以画出移动路径。\n",
    "\n",
    "如果只是随机生成坐标，那么醉汉行走的路线是笔直的，但是随机生成角度这个路线就比较自然"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "f34ab807",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "current=[0,0]\n",
    "allstep=1000\n",
    "movex,movey=[0],[0]\n",
    "while allstep>0:\n",
    "    angle=np.random.randint(360)#随机选取一个角度值（整数）\n",
    "    radian=np.deg2rad(angle)#将角度值转化成弧度\n",
    "    #根据移动的方向角生成x y 方向上移动的距离\n",
    "    x=np.cos(radian)\n",
    "    y=np.sin(radian)\n",
    "    current[0]+=x\n",
    "    current[1]+=y\n",
    "    #将移动后的坐标加入数组当中\n",
    "    movex.append(current[0])\n",
    "    movey.append(current[1])\n",
    "    allstep-=1\n",
    "\n",
    "plt.title(\"A drunk walking in two-dimension space\")\n",
    "plt.scatter(0,0,c='red')\n",
    "plt.plot(movex,movey,'pink')\n",
    "#循环最后一个current值就是终点坐标\n",
    "plt.scatter(current[0],current[1],c='green')\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
